package binary_tree.Leetcode;


/**
 * 二叉树的 直径
 */
public class Num543_DiameterOfTree {
    private int max=0;
    public int diameterOfBinaryTree(TreeNode root) {
        //边界条件
        if(root==null||(root.left==null&&root.right==null)){
            //空树 或者只存在根节点 没有边
            return 0;
        }
        height(root);
        return max;
    }
    //递归去求每个节点的高度
    private  int height(TreeNode root){
        if(root==null){
            return 0;
        }
        //计算左子树的高度
        int l=height(root.left);
        //计算右子树的高度
        int r=height(root.right);
        max=Math.max(max,(l+r));
        //返回值是树的深度
        return 1+Math.max(l,r);
    }
}
